package com.xiangge.demo;

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;

public class DemoTest {
    public static void main(String[] args) {
        // 调用无参无返回值的方法，直接调用
        method();
    }
    // 直接定义一个无参无返回值的方法
    public static void method(){
        // 定义一个长度为5的数组
        int[] arr = new int[5];
        // 生成随机数用来作为数组的元素，使用for循环遍历数组得到元素
        for (int i = 0; i < arr.length; i++) {
            // 使用Random方法来生成随机数，范围在1-99之间
            arr[i] = new Random().nextInt(100);
        }
        // 使用Array方法查看数组
        System.out.println(Arrays.toString(arr));
        // 键盘输入一个int类型的变量，来与数组进行判断
        // 使用Scanner方法来完成键盘输入
        System.out.println("请输入一个2-5之间的数：");
        int num = new Scanner(System.in).nextInt();
        // 再次遍历数组，进行条件比较
        for (int i = 0; i < arr.length; i++) {
            // 使用if单选结构
            if (arr[i] % num == 0){
                System.out.println("符合条件的元素有：" + arr[i]);
            }
        }
    }

    public static void maing(String[] args) {
        // 首先定义一个长度为5的数组
        int[] arr = new int[5];
        // 遍历数组，然后再数组中生产随机数来作为数组元素
        for (int i = 0; i < arr.length; i++) {
            // 使用Random方法来生成范围在1-99的随机数
            arr[i] = new Random().nextInt(100);
        }
        // 使用Array方法打印数组
        System.out.println(Arrays.toString(arr));
        // 调用getScore方法
        int count = getScore(arr);
        System.out.println("数组中大于平均数的元素有" + count + "个");
    }
    // 定义一个有参有返回值的方法
    public static int getScore(int[] arr){
        // 定义int类型和double类型的临时变量
        double avg = 0;
        int sum = 0;
        // 遍历调用的数组arr
        for (int i = 0; i < arr.length; i++) {
            // 取得数组的总和
            sum += arr[i];
        }
        // 数组的平均数
        avg = sum / arr.length;
        // 要获取出现的次数，在定义int类型的变量
        int count = 0;
        // 再次遍历数组，进行比较
        for (int i = 0; i < arr.length; i++) {
            // 使用if单选结构来判断
            if (arr[i] > avg){
                count++;
            }
        }
        return count;
    }

    public static void main8(String[] args) {
        // 键盘录入班级人数，使用Scanner方法
        System.out.println("输入班级人数：");
        int input = new Scanner(System.in).nextInt();
        // 根据键盘录入的人数来创建班级数组
        int[] arr = new int[input];
        // 使用for循环遍历数组，然后生成随机数来作为学生的成绩，也就是数组的元素
        for (int i = 0; i < arr.length; i++) {
            // 生成随机数，来作为元素
            arr[i] = new Random().nextInt(101);
        }
        // 使用Array方法来查看生成后的数组
        System.out.println(Arrays.toString(arr));
        // 要统计人数，就要定义int类型的变量
        int count = 0;
        int num = 0;
        // 使用for循环，来遍历数组
        for (int i = 0; i < arr.length; i++) {
            // 使用if结构来判断
            if (arr[i] < 60){
                count++;
            }
            // 累加取得班级的总分
            num += arr[i];
        }
        System.out.println("不合格的人有：" + count + "个");
        System.out.println("班级的平均分为：" + (num / input));
    }
    public static void main7(String[] args) {
        // 定义一个长度为10的数组
        int[] arr = new int[10];
        // 遍历打印数组
        for (int i = 0; i < arr.length; i++) {
            // 随机数生成
        /*同一种写法的不同表现形式
        Random r = new Random();
        int num = 10 + r.nextInt(91);*/
            int num = new Random().nextInt(91) + 10;
            arr[i] = num;
        }
        // 打印随机数赋值后的数组
        System.out.println(Arrays.toString(arr));
        int min = arr[0];
        // 再次遍历数组，按需求打印最小值
        for (int j = 1; j < arr.length; j++) {
            // 使用if结构
            // 如果min大于遍历中的元素，则进行赋值
            if (min > arr[j]){
                min = arr[j];
            }
        }
        System.out.println("数组中的最小值为：" + min);
    }
    public static void main6(String[] args) {
        // 定义一个长度为5的数组
        int[] arr = new int[5];
        int i;
        // 遍历数组，然后产生的随机数放入其中
        for (i = 0; i < arr.length; i++) {
            // 随机生成数，使用Random方法
            // 因为要随机生成五次，所以直接放入循环，随着数组遍历跟着生成
            int num = new Random().nextInt(100);
            arr[i] = num;
        }
        System.out.println(Arrays.toString(arr));
        // 创建一个int类型的变量，用来统计是否出现预期结果
        int count = 0;
        // 再次将生成好的数组进行遍历
        for (int j = 0; j < arr.length; j++) {
            // 使用if双选结构进行条件判断
            if (arr[j] < 10){
                System.out.println("数组中符合条件的元素有：" + arr[j]);
                count++;
            }
        }
        if (count == 0){
            System.err.println("未找到合适的数据!");
        }
    }
    public static void main5(String[] args) {
        // 定义数组
        int[] arr = {95, 92, 75, 56, 98, 71, 80, 58, 91, 91};
        // 定义int类型的变量，将其赋值为数组中的第一个元素进行比较
        int max = arr[0], min = arr[0];
        // 遍历数组并求出最大值
        for (int i = 1; i < arr.length; i++) {
            // 使用if但选结构
            if (max < arr[i]){
                max = arr[i];
            }
        }
        System.out.println("数组的最大值为：" + max);
        for (int j = 1; j < arr.length; j++) {
            if (min > arr[j]){
                min = arr[j];
            }
        }
        System.out.println("数组的最小值为：" + min);
    }
    public static void main4(String[] args) {
        /*已知珠穆朗玛峰的高度为8848.88米，一张纸的厚度为：0.01米（纸无限大），
        每将纸折一次厚度变为原来的2倍，请问需要折多少次,纸的厚度可以达到或者超过珠穆朗玛峰的高度？*/
        // 定义一个double类型的整数变量
        double i = 0.01;
        // 定义一个int类型的统计count
        int count = 0;
        // 使用while循环
        while (i <= 884800){
            i = i * 2;
            count++;
        }
        System.out.println("总共折了" + count + "次");
    }
    public static void main3(String[] args) {
        /*随机生成一个100以内的正整数，猜数字游戏从键盘输入数，
        如果大了提示，大了，如果小了，提示小了，如果对了，就不再猜了，
        并统计一共猜了多少次*/
        // 使用Random自动生成一个对象，在1-100之间
        Random random = new Random();
        int num = random.nextInt(100) + 1;
        // 创建键盘录入
        Scanner input = new Scanner(System.in);

        // 定义一个int类型变量，来控制猜测次数
        int count = 0;
        // 不知道要猜多少次，是死循环，用while（true）
        while (true){
            // 猜测数字
            System.out.println("请输入猜测数字【1-100】：");
            int guess = input.nextInt();
            // 使用if多选结构判断
            if (guess > num){
                System.out.println("猜大了");
            }else if (guess < num){
                System.out.println("猜小了");
            }else {
                System.out.println("猜对了");
                break; // 当情况正确的时候结束，跳出循环
            }
            // break如果在这里，那while循环之中的if条件判断只会执行一次就结束
            count++;
            if (count == 3){
                System.out.println("机会用光了");
                break;
            }
        }
    }
    public static void main2(String[] args) {
        /*从键盘输入整数，输入0结束，统计输入的正数、负数的个数。*/
        // 创建Scanner对象
        Scanner input = new Scanner(System.in);
        // 有统计次数，再创建一个int类型的变量
        int count1 = 0, count2 = 0;
        // 因为有结束条件，所以录入是不断循环的且不知道次数，用while(true)循环
        while (true){
            System.out.println("请输入一个整数：");
            int num = input.nextInt();
            // 设置结束条件
            if (num == 0){
                System.out.println("输入结束");
                break;
            }// 设置正数和负数的统计
            else if (num < 0){
                count1++;
            }else {
                count2++;
            }
        }
        System.out.println("正数有" + count2 + "个" + "\n" + "负数有" + count1 + "个");
    }
    public static void main1(String[] args) {
        /*	求1-100的整数中能同时被3和5整除的数的和*/
        // 定义int类型的变量
        int sum = 0;
        // 使用for循环
        for (int i = 1; i <= 100; i++) {
            // 使用if判断语句来判断哪些数会同时被3和5整除
            if (i % 3 == 0 && i % 5 == 0){
                sum += i;
            }
        }
        System.out.println("sum = " + sum);

    }
}
